﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Diagnostics;
using System.Text;

namespace WebDirectorio
{
    public partial class ListaAnexos : System.Web.UI.Page
    {
        #region Eventos de .NET
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            String _List = System.Configuration.ConfigurationManager.AppSettings.Get("List");

            String _nombre, _apellido;
            _nombre = Request.QueryString["nom"] + "";
            _apellido = Request.QueryString["ape"] + "";


            string query1 = SPquery(_nombre, _apellido);

            SPSite oSiteCollection = new SPSite(System.Configuration.ConfigurationManager.AppSettings.Get("Site"));
            SPWeb web = oSiteCollection.RootWeb;
            SPList list = web.Lists[_List];
            SPQuery consulta = null;
            if (!query1.Equals(""))
            {
                consulta = new SPQuery();
                consulta.Query = query1;
            }

            DataTable tabla = list.GetItems(consulta).GetDataTable();
            if (tabla!=null)
            {
                if (tabla.Rows.Count>0)
                {
                    IEnumerable data = from a in tabla.AsEnumerable()
                                       select new
                                       {
                                           APELLIDOS = a.Field<string>(0) + " " + a.Field<string>(1),
                                           NOMBRES = a.Field<string>(2),
                                           SEDE = a.Field<string>(3),
                                           CARGO = a.Field<string>(4),
                                           AREA = a.Field<string>(5),
                                           ANEXO = a.Field<string>(6),
                                           DIRECTO = a.Field<string>(7),
                                           NEXTEL = a.Field<string>(8),
                                           RPM = a.Field<string>(9)
                                           //,FECHA_CUMPLEAÑOS = a.Field<string>(11)
                                       };
                    gvResultado.DataSource = data;
                    gvResultado.DataBind();
                }
            }
            
        }

        protected void gvResultado_PreRender(object sender, EventArgs e)
        {
            if (gvResultado.Rows.Count > 0)
            {
                //This replaces <td> with <th> and adds the scope attribute
                gvResultado.UseAccessibleHeader = true;

                //This will add the <thead> and <tbody> elements
                gvResultado.HeaderRow.TableSection = TableRowSection.TableHeader;

                //This adds the <tfoot> element. 
                //Remove if you don't have a footer row
                gvResultado.FooterRow.TableSection = TableRowSection.TableFooter;
            }
        }

        protected void gvResultado_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //if (e.Row.RowType == DataControlRowType.DataRow)
            //{
            //    DataRowView rowview = (DataRowView)e.Row.DataItem;
            //    e.Row.Cells[1].Text = rowview["APELLIDO_x0020_PATERNO"].ToString() + " " + rowview["APELLIDO_x0020_MATERNO"].ToString();
            //}
        }
        #endregion

        #region SPquery
        /// <summary>
        /// Crea la consulta CAML con los parametros que vienen por URL.
        /// Solo soporta tres parametros con los nombres de las columnas fijas
        /// Se usó El software "CAML Builder" de la web http://www.u2u.net/ para generar la consulta CAML para SharePoint
        /// </summary>
        /// <param name="_nombre"></param>
        /// <param name="_apellido"></param>
        /// <param name="_empresa"></param>
        /// <returns></returns>
        private string SPquery(string _nombre, string _apellido)
        {
            string nombre_q = string.Empty, apellidop_q = string.Empty;
            string query1 = "<Where>";
            if (!_nombre.Equals(""))
                nombre_q = "<Contains><FieldRef Name='NOMBRES' /><Value Type='Text'>" + _nombre + "</Value></Contains>";

            if (!_apellido.Equals(""))
            {
                apellidop_q = "<Or><Contains><FieldRef Name='Title' /><Value Type='Text'>" + _apellido + "</Value></Contains>"
                    + "<Contains><FieldRef Name='APELLIDO_x0020_MATERNO' /><Value Type='Text'>" + _apellido + "</Value></Contains></Or>";
            }

            //Todos
            if (_nombre.Equals("") && _apellido.Equals(""))
            {

            }//Nombre
            else if (!_nombre.Equals("") && _apellido.Equals(""))
            {
                query1 += nombre_q;
            }//Apellidos
            else if (_nombre.Equals("") && !_apellido.Equals(""))
            {
                query1 += apellidop_q;
            }//Nombre y Apellidos
            else if (!_nombre.Equals("") && !_apellido.Equals(""))
            {
                query1 += "<And>";
                query1 += nombre_q;
                query1 += apellidop_q;
                query1 += "</And>";
            }
            query1 += "</Where>";

            return query1;
        }
        #endregion
    }
}